/**
 * https://leetcode.cn/problems/koko-eating-bananas/
 * 875. 爱吃香蕉的珂珂
 * 中等 欧琳琳 2024.09.22
 * 数组 二分查找
 */

class Solution {
//吃香蕉个数（速度）：下界为1，上界为最多的一堆中的香蕉数目
public:
    bool canfinish(const vector<int>&piles,int k,int h)
    {
        int hours=0;
        for(int pile:piles)
        {
            hours+=(pile+k-1)/k;
            if(hours>h)
                return false;
        }
        return hours<=h;
    }

    int minEatingSpeed(vector<int>& piles, int h) {
        int left=1,right=*max_element(piles.begin(), piles.end());//速度
        while(left<right)
        {
            int mid=left+(right-left)/2;
            if(canfinish(piles,mid,h))
            {
                right=mid;
            }
            else
            {
                left=mid+1;
            }
        }
        return left;
    }
};